/**
 * 此文件里存放不好分类说明的js方法 
 */

var domsJs = { 


	/** 
	 * js原生获取dom对象	
     * @param {string}    selector  选择器 如 #id .classname  div  div.classname
	 * @returns {array}  dom对象数组
	 */
	getDom:function(selector){ 
		var type = selector.substring(0, 1);
		if (type === '#') {
			if (document.querySelecotor) return document.querySelector(selector)
			return document.getElementById(selector.substring(1))

		}else if (type === '.') {
			if (document.querySelecotorAll) return document.querySelectorAll(selector)
			return document.getElementsByClassName(selector.substring(1))
		}else{
			return document['querySelectorAll' ? 'querySelectorAll':'getElementsByTagName'](selector)
		}
	},


	/** 
	 * js原生方法：根据样式名称获取dom	
     * @param {obj}    elem   dom对象 使用样式获取 document.querySelector(".classname")  使用id获取  document.querySelector("#classname");
	 * @param {string} cls    样式名称
	 */
	hasClass:function (elem, cls) {
		var _this = this;
		cls = cls || '';
		if (cls.replace(/\s/g, '').length == 0) return false; //当cls没有参数时，返回false
		return new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');
	},
	addClass:function(elem, cls) {
		var _this = this;
		if (!_this.hasClass(elem, cls)) {
			elem.className = elem.className == '' ? cls : elem.className + ' ' + cls;
		}
	},
	removeClass:function(elem, cls) {
		var _this = this;
		if (_this.hasClass(elem, cls)) {
		  var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, '') + ' ';
		  while (newClass.indexOf(' ' + cls + ' ') >= 0) {
			newClass = newClass.replace(' ' + cls + ' ', ' ');
		  }
		  elem.className = newClass.replace(/^\s+|\s+$/g, '');
		}
	},


	/** 
	 * js原生方法：查找子元素在父元素中的位置索引	
     * @param {obj}    childDom   dom对象 使用样式获取 document.querySelector(".classname")  使用id获取  document.querySelector("#classname");
	 * @returns {int}  位置索引
	 */	
	getChildIndex:function(childDom){
		if(childDom==null || childDom=="" || childDom==undefined) return "";
		var parent = childDom.parentNode
		for(var i=0;i < parent.children.length;i++){
           if(parent.children[i]==childDom){
			 return i;
			 break;
           }
        }
	},

	/** 
	 * 在目标dom对象的前或是后插入新的dom对象	
     * @param {obj}    newElement    要插入的dom对象 
	 * @param {obj}    targetElement 目标dom对象
	 * @param {int}    type   1:之前 其它值：之后   默认为之后
	 * @returns 
	 */	
	insertDom:function( newElement, targetElement,type){
		if(targetElement==null || newElement==null ) return ""
		var parent = targetElement.parentNode;
		if(type=="1"){
			parent.insertBefore( newElement, targetElement);
		}else{
			if ( parent.lastChild == targetElement ){
				// 如果最后的节点是目标元素，则直接添加。因为默认是最后
				parent.appendChild( newElement);
			}else{
				//如果不是，则插入在目标元素的下一个兄弟节点的前面。也就是目标元素的后面
				parent.insertBefore( newElement, targetElement.nextSibling);
			}
		}
	},


}
